package com.bilibili.mapper;

import cn.hutool.core.date.DateTime;
import com.bilibili.entity.MyCoin;
import com.bilibili.entity.User;
import org.apache.ibatis.annotations.Param;

import java.sql.Date;
import java.util.List;

/**
 * 和User相关的操作Mapper
 *
 * @author YM
 */
public interface UserMapper {
    /**
     * 根据用户名查找用户信息
     *
     * @param userName 用户名
     * @return 用户信息
     */
    User getUserByUserName(String userName);

    /**
     * 根据手机号获取用户信息
     *
     * @param phone 手机号
     * @return 根据手机号查询出来的用户信息
     */
    boolean getUserByPhone(String phone);

    /**
     * 根据手机号或者邮箱获取用户信息
     *
     * @param phoneOrEmail 手机号或邮箱
     * @return 查询出的用户信息
     */
    User getUserByPhoneOrEmail(String phoneOrEmail);

    /**
     * 新增用户信息
     *
     * @param user 用户信息对象
     * @return 是否插入成功
     */
    boolean addUser(User user);

    /**
     * 通过邮箱或者手机号修改密码
     * @param phoneOrEmail 邮箱或者手机号
     * @param newPwd 新密码
     * @return 是否修改成功
     */
    boolean updatePwdByPhoneOrEmail(@Param("phoneOrEmail") String phoneOrEmail,@Param("newPwd") String newPwd);
    /**
     * 修改硬币
     *
     * @param id 用户编号
     * @return 是否修改成功
     */
    boolean updateCoin(int id);

    /**
     * 添加硬币记录
     * @param
     * @return 是否修改成功
     */
    boolean addCoinRecord(MyCoin myCoin);



    /**
     * 修改登录时间
     *
     * @param id 用户编号
     * @return 是否修改成功
     */
    boolean updateLoginTime(int id);

    /**
     * 更改用户头像
     *
     * @param
     * @return 是否修改成功成功
     */
    boolean modifyUserImage(@Param("id") Integer id,
                            @Param("image") String image);


    /**
     * 拿到所有的id
     * @return
     */
    List<Integer> getAllUserId();


    /**
     * 是否存在每日登录
     * @param id   用户id
     * @return
     */
    boolean isExistTodayLogin(@Param("id") Integer id);


    /**
     * 根据用户id获得用户
     * @param userId  用户id
     * @return
     */
    User getUserByuserId(Integer userId);
}
